package com.thouiot.common.result;

import com.thouiot.common.exception.ErrorCodeEnum;
import com.thouiot.common.exception.IErrorCode;

/**
 * @description 返回结果工具类
 * @author yuanqi
 * @date 2025/04/09 13:13
 */
public class ResultUtil {

    /**
     * 通过错误码构建返回结果
     * @param error
     * @return
     */
    public static TiotResult builderResult(IErrorCode error) {
        TiotResult result = new TiotResult();
        result.setCode(error.getCode());
        result.setMsg(error.getMsg());
        return result;
    }

    /**
     * 构建并返回一个TiotResult对象。
     * 该方法根据传入的错误代码和可选的主体对象，创建一个结果对象，用于API响应。
     *
     * @param error 错误信息接口，包含错误代码和错误消息。
     * @param body API响应的主体对象。
     * @return TiotResult，包含错误代码、错误消息和响应主体。
     */
    public static TiotResult builderResult(IErrorCode error, Object body) {
        TiotResult result = new TiotResult();
        result.setCode(error.getCode());
        result.setMsg(error.getMsg());
        result.setBody(body);
        return result;
    }

    /**
     * 通过错误信息封装失败的返回结果
     * @param msg
     * @return
     */
    public static TiotResult builderFailedResult(String msg) {
        TiotResult result = new TiotResult(ErrorCodeEnum.ERROR);
        result.setMsg(msg);
        return result;
    }

    /**
     * 通过错误信息和数据封装失败的返回结果
     * @param msg
     * @param body
     * @return
     */
    public static TiotResult builderFailedResult(String msg, Object body) {
        TiotResult result = new TiotResult(ErrorCodeEnum.ERROR);
        result.setMsg(msg);
        result.setBody(body);
        return result;
    }

    /**
     * 通过数据封装返回结果
     * @param body
     * @return
     */
    public static TiotResult builderSuccessResult(Object body) {
        TiotResult result = new TiotResult(ErrorCodeEnum.SUCCESS);
        result.setBody(body);
        return result;
    }
}
